import java.util.Arrays;
import java.util.Scanner;

public class Demo02 {


//		1.	采用二维数组存放用户信息（部门、用户名、密码、用户角色）、书籍信息（编码（ISBN）、
//		书籍名称、价格、出版社、作者）、出版社信息（出版社名称、地址、联系人）
//		2.	初始化用户信息、出版社信息、书籍信息；（设置基础信息，赋值；）
//		3.	用户登录功能：请用户输入账号密码，对比用户信息是否正确：
//		1）	不正确提示“该用户不存在或者密码错误！请重新登录！”
//		2）	正确，进入系统菜单，“1 图书管理  2 出版社管理  3 退出系统
	static String [] []  userinfo = new String[100] [4];//用户信息（部门、用户名、密码、用户角色）
	static String [] []  booksinfo = new String[100] [5];//	书籍信息（编码（ISBN）、书籍名称、价格、出版社、作者）	
	static String [] []  pressinfo = new String[100] [3];// 出版社信息（出版社名称、地址、联系人）
	static Scanner scan = new Scanner(System.in);
	
	public static void main(String[] args) {
		biggen();
		
	}
	private static void biggen() {
		// 开始
		InitializationInfo();//初始化信息
		System.out.println("欢迎来到闽大图书管理系统！");
		System.out.println("1.登录 2.注册");
		int a = scan.nextInt();
		switch(a){
		case 1:
			register();//登录
		case 2:	
			login();//注册
		}
	}
	private static void login() {
		// 注册
		int index = gitindex(userinfo,0);
		System.out.println("请输入所属部门：");
		userinfo[index][0]=scan.next();
		System.out.println("请输入用户名：");
		userinfo[index][1]=scan.next();
		System.out.println("请输入密码：");
		userinfo[index][2]=scan.next();
		System.out.println("请输入用户角色");
		userinfo[index][3]=scan.next();
		System.out.println("注册成功！");
		System.out.println("欢迎来到闽大图书管理系统！");
		register();
	}
	private static int gitindex(String[][] userinfo2, int in) {
		int index=-1;
		for (int i = 0; i < userinfo.length; i++) {
			if (userinfo[i][in] == null) {
				index =i;
				break;
			}
		}
		return index;
	}
	private static void register() {
		// 登录
		System.out.println("请输入用户名：");
		String username = scan.next();
		System.out.println("请输入密码:");
		String usernum = scan.next();
		boolean verify = false;
		for (int i = 0; i < userinfo.length; i++) {
			if (username.equals(userinfo[i][1]) && usernum.equals(userinfo[i][2])) {
				verify = true;
				break;
			}
		}
		if (verify) {
			System.err.println("登陆成功！");
			booksmeny();
		}else {
			System.out.println("输入错误，请重新输入！");
			register();
		}
		
		
	}
	private static void booksmeny() {
//		// T2）	正确，进入系统菜单，“1 图书管理  2 出版社管理  3 退出系统” 
//		4.	图书管理菜单：
//		1)	增加：图书编码唯一，如果新增的图书信息编码已存在，提示“图书已存在”；不存在才进行新增书籍信息；
//		2)	删除：根据ISBN编码删除图书；
//		3)	更新：ISBN唯一不能更改，根据ISBN更新相应的书籍信息；
//		4)	查询菜单：
//		a)	根据ISBN查询
//		b)	根据书名查询（模糊）
//		c)	根据出版社查询
//		d)	根据作者查询
//		e)	根据价格范围查询
//		f)	查询所有书籍信息
//		g)	返回上一级菜单
//		5)	返回上一级菜单
		System.out.println("请输入数字进行选择：1 图书管理  2 出版社管理  3 退出登录  4 退出系统");
		int num1=scan.nextInt();
		switch(num1) {
		case 1:
			booksmanage();
		case 2:
			pressmanage();
		case 3:
			biggen();
		case 4:
        System.exit(0);
			
		}
	}
	private static void pressmanage() {
		//出版社管理
		System.out.println("请输入：1.增加 2.删除 3.更新 4.根据出版社名称查询 5.查询所有出版社 6.返回上一级菜单");
		int num3= scan.nextInt();
		switch(num3) {
		case 1:
			prassadd();
		case 2:
			prassdelete();
			
		case 3:
			pressupdate();
		case 4:
			prassname();
		case 5:
			prassall();
		case 6:
			booksmeny();
		}
	}
	private static void prassall() {
		// 查询所有出版社
		for (int i = 0; i < pressinfo.length; i++) {
			for (int j = 0; j < pressinfo.length; j++) {
				System.out.print(pressinfo[i][j]);
			}System.out.println();
		}
		booksmeny();
	}
	private static void prassname() {
		// 根据出版社名称查询
		System.out.println("请输入出版社名称：");
		String prassname = scan.next();
		for (int i = 0; i < pressinfo.length; i++) {
			if (prassname.equals(pressinfo[i][0])) {
				for (int j = 0; j < pressinfo.length; j++) {
					System.out.print(pressinfo[i][j]);
				}
			}
		}booksmeny();
	}
	private static void pressupdate() {
		// 出版社更新
		System.out.println("请输入要更新的出版社名称：：");
		String isbn =scan.next();
		int index1=-1;
		for (int i = 0; i < pressinfo.length; i++) {
			if (isbn.equals(pressinfo[i][0])) {
				 index1 = i;
				 break;
			}
		}
		System.out.println("出版社名称      地址                            联系人");
		System.out.println(Arrays.toString(pressinfo[index1]));
		if (index1!=-1) {
			System.out.println("请输入要更新的地址：");
			pressinfo[index1][1]=scan.next();
			System.out.println("请输入要更新的联系人姓名：");
			pressinfo[index1][2]=scan.next();
			System.out.println("更新成功！！！");
			System.out.println("出版社名称      地址                            联系人");
			System.out.println(Arrays.toString(pressinfo[index1]));
			booksmeny();
			}else {
				System.out.println("删除失败");
		booksmeny();}
	}
	private static void prassdelete() {
		// 出版社删除
		System.out.println("请输入要删除的出版社名称：");
		String name = scan.next();
		for (int i = 0; i < pressinfo.length; i++) {
			if (name.equals(pressinfo[i][0])) {
				for (int j = 0; j < booksinfo.length; j++) {
					if (name.equals(booksinfo[j][3])) {
						System.out.println("该出版社有相关图书信息存在！不可以删除！如果要删除请先删除所有相关图书信息！！！");
						System.out.println("删除失败");
						break;
					} else {						
						System.out.println("删除成功");
						break;
					}
				}
			} else {
				System.out.println("删除失败");
				break;
			}
		}
		
	}
	private static void prassadd() {
		// 出版社增加
		System.out.println("");
		int index =gitindex(pressinfo,0);
		System.out.println("请输入出版社名称：");
		pressinfo[index][0]=scan.next();
		System.out.println("请输入出版社地址：");
		pressinfo[index][1]=scan.next();
		System.out.println("请输入出版社联系人：");
		pressinfo[index][2]=scan.next();
		System.out.println("出版社添加成功");
		booksmeny() ;
		
	}
	private static void booksmanage() {
		// 1 图书管理  
		System.out.println("请输入：1.增加 2.删除 3.更新 4.查询 5.返回上一级菜单");
		int num2 = scan.nextInt();
		switch(num2) {
		case 1:
			booksadd();
			booksmanage();
		case 2:
			booksdelete();
			booksmanage();
		case 3:
			booksupdate();
			booksmanage();
		case 4:
			booksinquire();
		case 5:
			booksmeny();
		}
		
	}
	private static void booksinquire() {
		// 查询
		System.out.println("请输入查询种类：1.isbn 2.书名（模糊） 3.出版社 4. 作者 5. 价格范围 6.查询所有 7.返回上一级");
		int num2 = scan.nextInt();
		switch(num2) {
		case 1:
			inquireisbn();
		case 2:
			inquirename();
		case 3:
			inquirepress();
		case 4:
			inquirewriter();
		case 5:
			inquireprice();
		case 6:
			inquireall();
		case 7:
			booksmanage();
		}
	}
	private static void inquireall() {
		// 查询所有
		System.out.println("ISBN    书名                            价格    出版社                  作者");
		for (int i = 0; i < booksinfo.length; i++) {
			for (int j = 0; j < booksinfo.length; j++) {
				System.out.print(booksinfo[i][j]);
			}System.out.println();
		}
		
	}
	private static void inquireprice() {
//		 价格范围
		System.out.println("请输入最低价格");
		double minimum = scan.nextInt();
		System.out.println("请输入最高价格");
		double highest = scan.nextInt();
		for (int i = 0; i < booksinfo.length; i++) {
			double price = Double.parseDouble(booksinfo[i][2]);
			if (price>minimum && price<highest) {
				for (int j = 0; j < booksinfo.length; j++) {
					System.out.println(booksinfo[i][j]);
				}
			}
		}
	}
	private static void inquirewriter() {
		// 查询作者
		System.out.println("请输入作者姓名：");
		String name = scan.next();
		System.out.println("ISBN    书名                            价格    出版社                  作者");
		for (int i = 0; i < booksinfo.length; i++) {
			if (name.equals(booksinfo[i][4])) {
				for (int j = 0; j < booksinfo[i].length; j++) {
					System.out.print(booksinfo[i][j]+"    ");
				}
			}			
		}System.out.println();
		booksinquire();
		
	}
	private static void inquirepress() {
		// 查询出版社
		System.out.println("请输入出版社前的数字进行选择：1.北京大学出版社 2.清华大学出版社 3.中国政法大学出版社");
		int num2 =scan.nextInt();
		switch(num2) {
		case 1:
			for (int i = 0; i < booksinfo.length; i++) {
				if (booksinfo[i][3].equals("北京大学出版社")) {
					for (int j = 0; j < booksinfo[i].length; j++) {
						System.out.print(booksinfo[i][j]+"    ");
					}
				}			
			}System.out.println();
			booksinquire();
			
		case 2:
			for (int i = 0; i < booksinfo.length; i++) {
				if (booksinfo[i][3].equals("清华大学出版社")) {
					for (int j = 0; j < booksinfo[i].length; j++) {
						System.out.print(booksinfo[i][j]+"    ");
					}
				}			
			}System.out.println();
			booksinquire();
		case 3:
			for (int i = 0; i < booksinfo.length; i++) {
				if (booksinfo[i][3].equals("中国政法大学出版社")) {
					for (int j = 0; j < booksinfo[i].length; j++) {
						System.out.print(booksinfo[i][j]+"    ");
					}
				}			
			}System.out.println();
			booksinquire();
		}
	}
	private static void inquirename() {
		// 查询书名
		System.out.println("请输入书名：");
		String name = scan.next();
		System.out.println("ISBN    书名                            价格    出版社                  作者");
		for (int i = 0; i < booksinfo.length; i++) {
			if (name.equals(booksinfo[i][1])) {
				for (int j = 0; j < booksinfo[i].length; j++) {
					System.out.print(booksinfo[i][j]+"    ");
				}
			}			
		}System.out.println();
		booksinquire();
	}
	private static void inquireisbn() {
		// 查询isbn
		System.out.println("请输入ISBN号：");
		String isbn = scan.next();
		System.out.println("ISBN    书名                            价格    出版社                  作者");
		for (int i = 0; i < booksinfo.length; i++) {
			if (isbn.equals(booksinfo[i][0])) {
				for (int j = 0; j < booksinfo[i].length; j++) {
					System.out.print(booksinfo[i][j]+"    ");
					
				}
			}
		}System.out.println();
		booksinquire();
	}
	private static void booksupdate() {
		// 更新
		System.out.println("请输入ISBN号：");
		String isbn =scan.next();
		int index1=-1;
		for (int i = 0; i < booksinfo.length; i++) {
			if (isbn.equals(booksinfo[i][0])) {
				 index1 = i;
				 break;
			}
		}
		if (index1!=-1) {
			System.out.println("请输入新的书名：");
			booksinfo[index1][1]=scan.next();
			System.out.println("请输入新的价格：");
			booksinfo[index1][2]=scan.next();
			System.out.println("请输入新的出版社：");
			booksinfo[index1][3]=scan.next();
			System.out.println("请输入新的作者：");
			booksinfo[index1][4]=scan.next();
			System.out.println("更新成功！！！");
			}else {
				System.out.println("该ISBN号不存在！！！");
					booksmanage();
			}
	}
	private static void booksdelete() {
		// 删除
		System.out.println("请输入要删除的书本名称：");
		String booksname = scan.next();
		int index1=-1;
		for (int i = 0; i < booksinfo.length; i++) {
			if (booksname.equals(booksinfo[i][1])) {
				 index1 = i;
				 break;
			}
		}
		if (index1!=-1) {
		booksinfo[index1][0]=null;
		booksinfo[index1][1]=null;
		booksinfo[index1][2]=null;
		booksinfo[index1][3]=null;
		booksinfo[index1][4]=null;
		System.out.println("删除成功");
		}else {
			System.out.println("没有找到该书！");
				System.out.println("删除失败");
				booksmanage();
		}
		
		
	}
	private static void booksadd() {
		// 增加
		int index=-1;
		System.out.println("请输入isbn:");
		String isbn = scan.next();
		boolean a = false;
		for (int i = 0; i < booksinfo.length; i++) {
			if (isbn.equals(booksinfo[i][0])) {
				System.out.println("“图书已存在”");
				a=true;
			}
		}
		if (a) {
			
		}else {
			index =gitindex(booksinfo,0);
			 System.out.println("请输入书名:");
				booksinfo[index][1]=scan.next();
				System.out.println("请输入价格:");
				booksinfo[index][2]=scan.next();
				System.out.println("请输入出版社:");
				booksinfo[index][3]=scan.next();
				System.out.println("请输入作者:");
				booksinfo[index][4]=scan.next();
				System.out.println("添加成功！！！");
		}
		
		booksmanage();
	}
	private static void InitializationInfo() {
		// 初始化信息
//		采用二维数组存放用户信息（部门、用户名、密码、用户角色）、
////	书籍信息（编码（ISBN）、书籍名称、价格、出版社、作者）、出版社信息（出版社名称、地址、联系人）
		userinfo [0] [0]="软件部";
		userinfo [0] [1]="admin";
		userinfo [0] [2]="123";
		userinfo [0] [3]="软件开发员";
		
		userinfo [1] [0]="行政部";
		userinfo [1] [1]="李四";
		userinfo [1] [2]="1234";
		userinfo [1] [3]="管理员";
		//书籍信息
		booksinfo[0][0]="0001";
		booksinfo[0][1]="理想国";
		booksinfo[0][2]="50";
		booksinfo[0][3]="清华大学出版社";
		booksinfo[0][4]="柏拉图";
		
		booksinfo[1][0]="0002";
		booksinfo[1][1]="狂人日记";
		booksinfo[1][2]="50";
		booksinfo[1][3]="北京大学出版社";
		booksinfo[1][4]="鲁迅";
		
		booksinfo[2][0]="0003";
		booksinfo[2][1]="刑罚的历史";
		booksinfo[2][2]="50";
		booksinfo[2][3]="中国政法大学出版社";
		booksinfo[2][4]="罗翔";
		//出版社信息（出版社名称、地址、联系人）
		pressinfo[0][0]="北京大学出版社";
		pressinfo[0][1]="北京";
		pressinfo[0][2]="王五";
		
		pressinfo[0][0]="清华大学出版社";
		pressinfo[0][1]="北京";
		pressinfo[0][2]="李四";
		
		pressinfo[0][0]="中国政法大学出版社";
		pressinfo[0][1]="北京";
		pressinfo[0][2]="张三";
	}

	}


